Use case: read operations of CFI information

HAL1

HAL2

The user reads the CFI information using HAL_NOR_Read_CFI(), then returns to read mode using HAL_NOR_ReturnToReadMode().

The user reads the CFI information using HAL_NOR_CFI_ReadDeviceInfo(), then resets the device to return to read mode using HAL_NOR_CFI_000x_Reset().

Sequence diagram

Read operations of CFI information

  @startuml

  == Prerequisite: Initialization and configuration ==

  == Process ==

  "User Application" -> "HAL NOR Driver" : HAL_NOR_Read_CFI()
  note right: Read CFI data
  "HAL NOR Driver" -> "User Application" : HAL_OK or HAL_ERROR
  note right: Return status

  "User Application"->"HAL NOR Driver" : HAL_NOR_ReturnToReadMode()
  note right: Return the device to read mode

  "User Application"->"HAL NOR Driver" : HAL_NOR_ReadBuffer()
  note right: Read data from NOR memory.
  "HAL NOR Driver"->"User Application" : HAL_OK or HAL_ERROR
  note right: Return status

  @enduml

Code snippet

HAL1

HAL2

NOR_HandleTypeDef hnor;
NOR_CFITypeDef nor_cfi;
/* Read CFI info */
HAL_NOR_Read_CFI(&hnor, &nor_cfi);
/* Return to read mode */
HAL_NOR_ReturnToReadMode(&hnor);
/* Read data from the NOR flash memory */
HAL_NOR_ReadBuffer(&hnor,
                   (uint32_t *)NOR_StartAddress,
                   read_data_buffer,
                   buffer_size
                  );
hal_nor_handle_t hnor;
hal_nor_cfi_device_info_t device_info;
/* Retrieve NOR flash CFI information */
HAL_NOR_CFI_ReadDeviceInfo(&hnor, &device_info);
/* Reset the NOR flash device */
HAL_NOR_CFI_0001_Reset(&hnor);
/* Read data from the NOR flash memory */
HAL_NOR_CFI_0001_ReadArray(&hnor
                           (uint32_t *)NOR_StartAddress,
                           read_data_buffer,
                           buffer_size
                          );

Key changes

  1. HAL2 uses HAL_NOR_CFI_ReadDeviceInfo() and then a command-set specific reset API (HAL_NOR_CFI_000x_Reset()).

  2. HAL2 uses command-set specific read APIs (HAL_NOR_CFI_000x_ReadArray() or HAL_NOR_CFI_000x_Read()).